﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ZXW.DotNet.Common.Basic.ObjectManagement.Managers
{
    /// <summary>
    /// IPriorityManager 具有优先级的对象的管理器。
    /// 
    /// 适用场合：
    ///如果你的系统需要对被管理的对象进行优先级分级，
    ///并满足以下条件，则可使用IPriorityManager：
    ///（1）对象需要按优先级别（PriorityLevel）进行分类。
    ///（2）优先级别的划分是固定的，不会随系统的运行而发生变化。
    ///（3）对处于同一优先级别的对象，采用先来后到的顺序进行“第二优先级”的高低确定。
    ///（4）优先级别可以使用>=0的连续整数来表示。
    /// </summary>
    /// <typeparam name="T">被管理的对象的类型，必须从IPriorityObject继承。</typeparam>
    public interface IPriorityManager<T>
        : ISamePriorityObjectManager<T> where T : class, IPriorityObject
    {
        int PriorityLevelCount { get; set; }
    }
}
/*
 * 
 * IPriorityManager接口直接从ISamePriorityObjectManager继承，并没有多加任何方法，唯一增加的就是一个PriorityLevelCount属性和要求被管理的对象的类型必须是从IPriorityObject接口继承的一个泛型约束。
PriorityLevelCount用于设定你的系统需要有几种优先级别。比如，我的订单基于紧急的优先级可分为紧急、普通、不紧急三种，那么就可将PriorityLevelCount属性设置为3。
一个类型从IPriorityObject接口继承，就表明它的实例是具有优先级属性的对象。
 * 
 * 
 * */
